Rubyでは、入出力は単なるコマンドの集合ではなく、高度な ストリームベースのアーキテクチャです。このシステムの中心には IO クラスがあり、これは 双方向チャネル あなたのプログラムと外部との間をつなぐものとして機能します。ファイルやネットワークソケット、ユーザーのターミナルなどとやり取りする場合でも、Rubyはこれらを汎用的なストリームとして扱います。
1. 双方向ブリッジ
ある IO オブジェクトは統合された抽象化です。オペレーティングシステムが読み取りと書き込みのために別々の ファイルディスクリプタ (パイプのように)を認識している一方、Rubyはこれらを一つのオブジェクトにまとめます。これにより、両方向へのデータフローがスムーズに行えます。
2. カーネルと標準フィルター
The Kernel モジュールは、 gets および printなどのメソッドを提供します。これらは本質的に フィルター であり、グローバル定数 STDIN および STDOUTに委任するものです。つまり、コードを変更せずに、OSレベルでファイルやネットワークストリームを処理できるようにリダイレクトできます。
$$\text{ストリーム} \rightarrow \text{バッファ} \rightarrow \text{Rubyインタプリタ}$$
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>